package com.dy.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dy.pojo.dto.DyBlogByConDTO;
import com.dy.pojo.dto.DyBlogDTO;
import com.dy.pojo.entity.DyBlogEntity;
import com.dy.pojo.vo.DyBlogTagTypeVo;
import com.dy.pojo.vo.DyShowTypeVO;

import java.util.List;

/**
 * @ClassName:
 * @Author: 仄言in
 * @Desctiption: (描述)
 * @Date: 2021/6/8 14:56
 * @Version 1.0 (版本)
 */
public interface DyBlogService extends IService<DyBlogEntity> {
    /**
     * 博客列表查询
     * @param page 页码
     * @param pageSize 页张大小
     * @return Page
     */
    Page<DyBlogEntity> queryBolg(Integer page,Integer pageSize);

    /**
     * 根据id删除博客
     * @param id id
     */
    void deleteBlog(Long id);

    /**
     * 回收站
     * @return Page
     */
    List<DyBlogEntity> recycleBlog();

    /**
     * 回收站定时删除
     */
    void taskDeleteBlog();

    /**
     * 更改博客删除状态
     * @param id
     */
    void updateDeleted(Long id);

    /**
     * 修改博客内容
     * @param dyBlogDTO
     */
    void updateBlog(DyBlogDTO dyBlogDTO);

    /**
     * 添加博客信息
     * @param dyBlogDTO
     * @param code 当前登录用户的编号
     */
    void create(DyBlogDTO dyBlogDTO,String code);
    /**
     * 根据id查询
     * @param id
     * @return
     **/
    DyBlogTagTypeVo selectBlogById(Long id);
    /**
     * 多条件查询
     * @param dyBlogByConDTO
     * @return
     **/
    List selectBlogByCon(DyBlogByConDTO dyBlogByConDTO);
    /**
     * 博客展示首页的分页查询
     * @param page
     * @param pageSize
     * @return Page
     **/
    Page<DyBlogEntity> selectlist(Integer page,Integer pageSize);
    /**
     * 取type_code数量最多前六个
     * @return
     **/
    List<DyShowTypeVO> queryBy6();
    /**
     * 最新日期的前四条数据
     * @return
     **/
    List<DyBlogEntity> selectNewstBlog();
    /**
     * search首页搜索
     * @param page
     * @param pageSize
     * @param query
     * @return
     **/
    Page queryBySearch(Integer page, Integer pageSize, String query);
    /**
     * 博客根据id查询
     * @param id
     * @return
     **/
    DyBlogEntity selectShowBlogById(Long id);
    /**
     * markdown获取content反向编译
     * @param id
     * @return
     **/
    DyBlogEntity byBlogs(Long id);

    /**
     * type页面获取数量最多的前六条数据
     * @param page
     * @param pageSize
     * @return
     */
    Page<DyBlogEntity> queryBy6Type(Integer page, Integer pageSize);
    /**
     * 根据分类的名字查找所属分类的博客
     * @param name
     * @return
     **/
    Page<DyBlogEntity> selectBlogByName(String name);
}
